package cn.com.huzo.repository.purchase;

import cn.com.huzo.model.entities.purchase.PoNoticeEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 采购下单通知数据访问对象接口。
 *
 * @author 吴旭
 */
public interface PoNoticeRepository extends GenericRepository<PoNoticeEntity, String> {

    /**
     * 根据物料需求计划取得发送给的采购担当
     *
     * @param mrpId 物料需求计划ID
     * @param mrpType 物料需求计划类型 0：提前 1:定版 2：辅资材 3:补料单
     * @return
     */
    List<String> fetchPurchasedByName(Long mrpId, Short mrpType);

    /**
     * 得到该采购担当的未读通知数量
     *
     * @param purchasedBy 采购担当
     * @return
     */
    Integer fetchNewNoticeByRecipient(Long purchasedBy);

    /**
     * 设置接收标记
     *
     * @param poNoticeId 通知标识
     * @param mrpType 物料需求计划类型 0：提前 1:定版 2：辅资材 3:补料单
     * @return
     */
    Integer setReceiptedFlag(String poNoticeId, Short mrpType);

    /**
     * 设置采购担当自己负责部分的完成下单标记信息
     *
     * @param poNoticeId 通知标识
     * @param mrpType 物料需求计划类型 0：提前 1:定版 2：辅资材 3:补料单
     * @param overFlag 标记
     * @return
     */
    Integer setOverFlag(String poNoticeId, Short mrpType, String overFlag);

    /**
     * 根据所选采购担当生成采购下单通知记录。
     * <p>
     * @param criterion 通知内容
     *
     * @return 影响行数
     */
    Integer sendPoNotice(Map<String, Object> criterion);
}
